#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<cstring>
using namespace std;
#include<stack>

class Solution {
public:
    bool isValidSerialization(string preorder) {
        //按入度为2来算
        if(preorder.size()==1&&preorder[0]=='#'){
            return true;
        }
        stack<pair<string,int>> S;
        string buf = "";
        int i;
        for(i = 0;i<preorder.size();){
            while(preorder[i]!=','&&i<preorder.size()){
                buf +=preorder[i];
                ++i;
            }
            if(buf!="#"){
                if(S.empty()){
                    S.push(make_pair(buf,0));
                }
                else{
                    ++S.top().second;
                    S.push(make_pair(buf,0));
                }

            }
            else{
                if(!S.empty()){
                    ++S.top().second;
                    
                    while(!S.empty()&&S.top().second==2){
                    S.pop();

                    }
                    if(S.empty()&&i<preorder.size()){
                        return false;
                    }
                }
                else{
                    return false;
                }
                
            }
            buf = "";
            ++i;
        }
        if(S.empty()){
            return true;
        }
        else{
            return false;
        }
    }
};

int main(){
    Solution S;
    cout<<S.isValidSerialization("#,#")<<endl;
}